package com.sline.set;

import com.sline.bean.Person;

import java.util.Comparator;
import java.util.TreeSet;

public class Demo2_TreeSet {
    public static void main(String[] args) {
        // demo1();

        TreeSet<String> ts = new TreeSet<>(new CompareByLen());
        ts.add("aaaaaaaaaaaaa");
        ts.add("aaaaaaaaaaaab");
        ts.add("sdf");
        ts.add("adafljds");
        ts.add("lajdslfj");
        ts.add("dfdfdlajdslfj");
        ts.add("dfdfdlajkljsdaafasdfdslfj");

        System.out.println(ts);
    }

    private static void demo1() {
        // 自定义类要存入TreeSet中必须实现Comparable接口, 重写compareTo方法
        // 当compareTo方法返回0时, 集合中只有一个元素
        // 当compareTo方法返回正数时, 集合会怎么存怎么取
        // 当compareTo方法返回负数时, 集合会倒序存储

        TreeSet<Person> ts = new TreeSet<>();
        ts.add(new Person("张三", 23));
        ts.add(new Person("李四", 54));
        ts.add(new Person("王五", 25));
        ts.add(new Person("赵六", 16));
        ts.add(new Person("孙七", 16));

        System.out.println(ts);
    }
}

class CompareByLen implements Comparator<String> {
    @Override
    public int compare(String s1, String s2) {
        int num = s1.length() - s2.length();
        return num == 0 ? s1.compareTo(s2) : num;
    }
}
